package cn.sc.summer.calculate.form;

import cn.sc.summer.calculate.checkgroup.ValidatedGroup;
import cn.sc.summer.calculate.enums.TaskStatusEnum;
import cn.sc.summer.core.annotation.EnumValid;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;

/**
 * 类名：更新定时任务表单
 *
 * @author a-xin
 * @date 2023/11/27 08:22
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "启动定时任务表单")
public class TaskInfoForm implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 任务ID
     */
    @ApiModelProperty(value = "任务ID")
    @NotBlank(message = "任务ID不能为空！", groups = ValidatedGroup.UPDATE_TASK_INFO.class)
    private String id;

    /**
     * 任务名
     */
    @ApiModelProperty(value = "任务名")
    @NotBlank(message = "任务名称不能为空！")
    private String jobName;

    /**
     * 任务描述
     */
    @ApiModelProperty(value = "任务描述")
    private String description;

    /**
     * cron表达式
     */
    @ApiModelProperty(value = "cron表达式")
    @NotBlank(message = "执行表达式不能为空！")
    private String cronExpression;

    /**
     * 任务执行时调用哪个类的方法 包名+类名
     */
    @ApiModelProperty(value = "任务执行的类 包名+类名")
    @NotBlank(message = "任务执行方法不能为空！")
    private String beanClass;

    /**
     * 任务状态
     *
     * @see TaskStatusEnum
     */
    @ApiModelProperty(value = "任务状态", notes = "cn.sc.summer.calculate.enums.TaskStatusEnum")
    @EnumValid(message = "不存在对应的任务状态！", target = TaskStatusEnum.class)
    private Integer jobStatus;

    /**
     * 任务分组
     */
    @ApiModelProperty(value = "任务分组")
    @NotBlank(message = "任务分组方法不能为空！")
    private String jobGroup;

}
